<%@tag import="java.util.Random"%>
<%@tag import="com.wh.db.Page"%>
<%@tag import="com.wh.web.util.req.RequestUtil"%>
<%@tag import="java.util.List"%>
<%@ tag language="java" pageEncoding="UTF-8"%>
<%@ attribute name="page" type="java.lang.Object" description="待显示对象的key值，默认取page"%>
<%@ attribute name="url" type="java.lang.String" description="跳转页面用的链接地址，默认取当前URI"%>
<%@ attribute name="style" type="java.lang.String" description="整个导航条的默认地址"%>
<%@ attribute name="step" type="java.lang.Integer" description="页数过多显示...时的步进长度，默认值(最小值)=5"%>
<%!int urlGenStyle = 1;// 控制jsp中如何生成链接，以及如何生成js的链接转换代码
	final String genPageUrl1(String url, int page) {
		return url + ((url.indexOf('?') == -1) ? "?" : "&") + "_page=" + page;
	}
	final String genPageUrl2(String url, int page) {
		return url.replace("{pageNo}", String.valueOf(page));
	}
	final String genPageUrl(String url, int page) {
		return genPageUrl1(url, page);
	}
	final String genPageBtn(String url, int page) {
		return urlGenStyle == 1 ? genPageUrl1(url, page) : genPageUrl2(url, page);
	}%>
<%
	String style = RequestUtil.getAttribute(jspContext, "style", "pagenav");
	String url = RequestUtil.getAttribute(jspContext, "url", request.getRequestURI());
	Page page = RequestUtil.getAttribute(jspContext, "page");
	int step = RequestUtil.getAttribute(jspContext, "step", 5);// 多页时，每次步进的长度
	step -= 1;
	if (step < 4)
		step = 4;
	int curPage = page.getCurrentPage(); // 第几页
	int totalPage = page.getTotalPage(); //
	int rd = new Random().nextInt();
	String inputId = "PN" + (rd > 0 ? rd : -1 * rd);// 跳转到第几页
%>
<div class="<%=style%>">
	<div>
		<a href="<%=genPageUrl(url, curPage - 1)%>">上一页</a>
		<a href="<%=genPageUrl(url, 1)%>">1</a>
		<%
			int endPage = curPage + step / 2, startPage = curPage - step / 2;
			if (endPage > totalPage) {// 看看是否超出了最大显示范围
				endPage = totalPage;
				startPage = totalPage - step;
			}
			if (startPage <= 1) {
				startPage = 2;
				endPage = startPage + step;
				if (endPage > totalPage) {
					endPage = totalPage;
				}
			}
			if (startPage > 2) {// 如果当前页已超过一个步进长度，那么显示前面的...
		%>
		<a href="<%=genPageUrl(url, curPage - step)%>">...</a>
		<%
			} // End 前面的...
			for (; startPage <= endPage; startPage++) {// 以curPage页为中心
		%>
		<a href="<%=genPageUrl(url, startPage)%>"><%=startPage%></a>
		<%
			} // End for[startPage-endPage]
			if (totalPage > endPage) {// 需要显示最后一页的页码
				if (totalPage > (1 + endPage)) {// 需要显示后面的...
		%>
		<a href="<%=genPageUrl(url, curPage + step)%>">...</a>
		<%
			} // End 后面的...
		%>
		<a href="<%=genPageUrl(url, totalPage)%>"><%=totalPage%></a>
		<%
			}
		%>
		<a href="<%=genPageUrl(url, (curPage + 1)>=totalPage?totalPage:(curPage + 1))%>">下一页</a>
		<code>跳转到：</code>
		<input id="<%=inputId%>" class="input-text" type="text">
		<a class="go" onclick="jumpPager<%=inputId%>('<%=inputId%>')">GO</a>
	</div>
</div>

<script language="javascript">
	function jumpPager<%=inputId%>(id){
		var p = document.getElementById(id).value;
		if(!(p>0 && p<=<%=totalPage%>)){alert("请输入正确的数值");return}
		<%if (urlGenStyle == 1) {%>	
		location.href="<%=url%>" + (("<%=url%>".indexOf('?') == -1) ? "?" : "&") + "_page=" + p
		<%} else {%>	
		location.href="<%=url%>".replace("{pageNo}", String.valueOf(p)) 
		<%}%>
	}
	$("#<%=inputId%>").siblings("a").each(function(){if("<%=curPage%>"==this.innerText)this.innerHTML="<span class='current'><%=curPage%></span>"})
</script>
